//路由鉴权:全局守卫
import router from "./router";
import store from '@/store';
//使用全局导航守卫
//前置守卫:回调函数,当有路由切换会执行一次！！！！！
//to:跳转到的路由对象
//from:跳转前的路由对象
//next:函数,类似于push
//next()  next('')  next({})

//白名单数组
const whiteList = ["/trade", '/pay', "/paysuccess", "/center", "/center/myorder", '/center/teamorder'];

router.beforeEach(async (to, from, next) => {
    //判断用户是否登录-依据token[登录成功才会有]
    const token = store.state.user.token;;
    const nickName = store.state.user.nickName;//获取用户信息
    //用户登录成功
    if (token) {
        //登录成功还想去login,停留在首页
        if (to.path == '/login' || to.path == '/register') {
            next({ path: '/' });
        } else {
            //登录成功去的不是login||register->剩下home search detail addcartsuccess shopcart
            if (nickName) {
                //如果有用户信息放行
                next();
            } else {
                //store.dispatch('')->类似于组件内this.$store.dispatch('');
                try {
                    //下面的语句在获取用户信息,需要保证获取用户信息成功以后,路由跳转再放行
                    await store.dispatch('userInfo');
                    //放行
                    next();
                } catch (error) {
                    //token过期获取不到用户信息-处理!!!!
                    //退出登录:本地用户相关数据全部清空
                    await store.dispatch('userLogOut');
                    next({ path: '/login?大哥过期啦' });

                }
            }
        }
    } else {
        //未登录
        if (whiteList.includes(to.path)) {
            console.log(to.path);
            next({ path: '/login', query: { redirect: to.path } });
        } else {
            next();
        }
    }
});


router.afterEach((to, from) => {
    //设置网页左上角的标题
    document.title = `尚品汇-${to.meta.title}`
})




//项目一共多少个路由?
/*
login register home search detail addcartsuccess shopcart
用户未登录:这些路由都可以访问!!!
用户登陆了:login不能访问,其余六个有可以!!!
*/
